package com.iwhalecloud.citybrain.flow.platform.manager.common;

/**
 * 错误码与对应错误信息
 *
 * @author cheng.huaxing
 * @date 2019-01-23
 */
public enum ErrorCode {

    /**
     * 1：错误级别 02：manager模块 0001：查询不存在
     */
    BAD_REQUEST(888, "请求失败"),

    NOT_EXIST(1020001, "查询不存在"),

    PARAMETER_ERROR(1020002, "请求参数不正确"),

    MODEL_KEY_EXIST(1020003, "流程编码已存在"),

    PROCESS_SUSPEND_ERROR(1020004, "流程已挂起"),

    PROCESS_ACTIVATE_ERROR(1020005, "流程已激活"),

    TASK_CLAIM_ERROR(1020006, "任务已签收"),

    ALREADY_EXIST(1020007, "查询已存在"),

    START_PROCESS_FAILED(102008, "启动流程失败"),

    NOTICE_TYPE_TEMPLATE_EXIST(1020010, "该类型的模板已存在"),

    CHANNEL_TYPE_EXIST(1020011, "该渠道类型已存在"),

    MODEL_KEY_NAME_EXIST(1020012, "流程编码和流程名称已存在"),

    MODEL_NAME_EXIST(1020013, "流程名称已存在"),

    MODEL_IMPORT_INVALID_USER(1020014, "导入时无法检测到部分用户信息"),

    MODEL_IMPORT_INVALID_FORM(1020015, "导入时无法检测到部分表单信息"),

    MODEL_IMPORT_INVALID_USER_FORM(1020016, "导入时无法检测到部分用户和表单信息"),

    CANDIDATE_NOT_EXIST(1020017, "候选人不存在，请联系系统管理员处理"),

    PARAM_NOT_EXIST(1020018, "参数不能为空"),

    COMMENT_NOT_EXIST(1020019, "审批意见不能为空"),

    TERMINATE_PERSON_NOT_EXIST(1020020, "撤销人员信息不能为空"),

    TERMINATE_PERSON_NOT_INITIATOR(1020021, "撤销人员信息非流程发起人"),

    CANCEL_PROCESS_FAILED(1020022, "撤销流程失败"),

    TASK_ID_IS_NULL(1020023, "任务编号不能为空"),

    DATA_EXIST(1020024, "查询数据不存在"),

    SAVE_DATA_FAIL(1020025, "数据保存失败"),

    ACTION_NOT_EXIST(1020026, "操作行为不存在"),

    PROCESS_SUSPEND_FAIL(1020027, "流程暂停失败"),

    PROCESS_ACTIVATE_FAIL(1020028, "流程激活失败"),

    PROCESS_HANDLE_FAIL(1020029, "流程操作失败"),

    TURN_TO_USER_CODE_NOT_EXIST(1020030,"目标转办人员为空"),

    TURN_TO_USER_NOT_EXIST(1020031,"目标转办人不存在"),

    PARTICIPANTID_NOT_EXIST(1020032,"任务处理人不能为空"),

    TASK_SUSPEND_FAIL(1020033, "任务暂停失败"),

    TASK_ACTIVATE_FAIL(1020034, "任务激活失败"),

    TASK_HANDLE_FAIL(1020035, "任务操作失败"),

    NOT_MULTI_TASK(1020036,"非会签节点，不能进行该操作"),

    TASK_STATUS_NOT_NORMAL(1020037,"当前任务非正常状态，无法继续操作"),

    PROCESS_ID_IS_NULL(1020038, "流程实例编号不能为空"),

    ELEMENT_ID_IS_NULL(1020039, "当前元素编号不能为空"),

    ELEMENT_NOT_EXIST(1020040, "当前元素不存在"),

    MULTI_CONFIG_IS_NULL(1020041, "会签节点配置信息不能为空"),

    MODEL_NOT_EXIST(1020042, "流程信息不存在"),
    /**
     *
     */
    DELETE_FAILED(2020001, "删除失败"),
    FOURA_IDENTIFIED_MISSING(2020002, "身份缺失"),
    NO_AUTHORITY(2020003, "越权操作,请申请权限后重试"),
    OFFLINE_FAILED(2020004, "停用失败"),

    /**
     *
     */
    TENANT_IDENTIFIED_MISSING(3020001, "无关联租户"),
    IDENTITY_MISSING(3020002, "身份缺失,无此操作权限"),
    TENANT_ASSOCIATED_APP(3020003, "租户已关联应用"),
    APP_HAS_BUSI(3020004, "应用下存在业务"),
    BUSI_HAS_MODEL(3020005, "业务下存在流程"),

    USER_CODE_NOT_EXIST(302006, "用户编码不能为空"),
    USER_NOT_EXIST(302006, "根据用户编码查询用户信息为空"),

    /**
     * 表单
     */
    FORM_NOT_EXIST(4020001, "表单不存在"),
    FORM_KEY_EXIST(4020002, "表单编码已存在"),
    FORM_ALREADY_ASSOCIATED(4020003, "表单已被关联"),
    FORM_ALREADY_PUBLISHED(4020004, "表单已发布"),
    FORM_ALREADY_DEPLOYED(4020005, "表单已部署"),
    FORM_FIELD_NOT_EXIST(4020006, "表单必填字段缺失"),

    FORM_FIELD_QUERY_ERROR(4020007, "表单字段限制查询异常"),

    NOTICE_SETTINGS_EXIST(5010001, "该主题配置已存在"),
    NOTICE_SETTINGS_NOT_EXIST(5010002, "该主题配置不存在"),

    /**
     * 外置表单
     */
    EXTERNAL_FORM_NOT_EXIST(6020001, "外置表单不存在"),
    EXTERNAL_FORM_RESOLVE_FAIL(6020002, "外置表单解析有误"),

    /**
     * 委派
     */
    DELEGATE_TASK_FAIL(7020001, "委派任务失败"),
    NO_DELEGATE_AUTH(7030001, "该人员没有该任务的委派权限"),
    NO_DELEGATE_AUTH_MULTI_TASK(7040001, "该任务节点是会签任务,不能进行委派操作"),

    /**
     * 加签
     */
    ADD_SIGN_TASK_FAIL(7020002, "任务加签失败"),
    NO_ADD_SIGN_AUTH(7030002, "该人员没有该任务的加签权限"),

    /**
     * 阅办(该阅办消息只能由当前节点的责任人发起)
     */
    ONLY_TASK_RESPONSIBLE_START(7020003, "该阅办消息只能由当前节点的责任人发起"),
    NO_READ_DO_AUTH(7030003, "该人员没有发送该任务的阅办权限"),

    /**
     * 减签
     */
    DELETE_SIGN_TASK_FAIL(7020004, "任务减签失败"),
    NO_DELETE_SIGN_AUTH(7030004, "该人员没有该任务的减签权限"),

    /**
     * 流程
     */
    CREATE_PROCESS_INSTANCE_FAILED(9020001, "创建流程实例出错"),
    START_PROCESS_INSTANCE_FAILED(9020002, "启动流程实例出错"),
    PROCESS_INSTANCE_ALREADY_STARTED(9020010, "流程已经启动,不可重复启动"),
    PROCESS_INSTANCE_NOT_EXIST(9020003, "流程实例不存在"),
    WORK_ITEM_NOT_EXIST(9020004, "工单不存在"),
    SET_PARTICIPANTS_FAILED(9020005, "指定参与人失败"),
    CLEAN_PARTICIPANTS_FAILED(9020030, "清除处理人失败"),
    TASK_ROLLBACK_FAILED(9020006, "回退失败"),
    TASK_TRUN_FAILED(9020007, "转办失败"),
    TASK_NOT_EXIST(9020008, "任务不存在"),
    NODE_NOT_EXIST(9020010, "节点不存在"),

    TASK_HANDLE_ERROR(9020009, "任务处理失败"),

    MULTI_NEXT_NODE(902009, "后续存在多个节点，无法进行当前操作"),

    NEXT_NODE_NOT_USER_TASK(902010, "下一节点非用户节点，无法进行当前操作"),

    ASSIGNEE_NOT_FROM_PARAM(902011, "下一节点的处理人未设置从参数中获取"),

    EXPRESS_SETTING_ERROR(902012, "表达式设置错误"),

    CAN_NOT_ASSIGN_SELF(902013, "任务不能再次分配给自己"),

    TASK_TAKEBACK_FAILED(902014, "拿回失败"),

    NOT_TASK_CANDIDATE_OR_TASK_NOT_EXIST(902015, "非当前任务处理人或任务不存在，不可进行该操作"),

    FIRST_NODE_NO_SETTING_FORCE_PICK(902016, "第一个用户节点不能设置强制选人"),

    EXIST_FORCE_PICK_NODE_NO_PROCESSED(902017, "还有强制选人的节点没有被配置"),

    NODE_CANDIDATE_NO_PICKED(902018, "指定流程节点处理人未做任何配置"),

    NO_SETTING_FORCE_PICK_PROCESSED(902019, "指定流程节点处理人未配置强制选人节点"),

    NODE_ASSIGNEE_NOT_EXIST(902020, "指定流程节点处理人变量未做配置"),

    CAN_NOT_DELETE_SELF(902021, "不能减签分配给自己的任务"),

    /**
     * 对象相关
     */
    OBJECT_META_PROCESS_QUERY_FAIL(903012, "流程对象查询失败"),

    /**
     * 设置流程的变量
     */
    TASK_VARIABLE_SET_ERROR(904012, "设置任务变量失败"),

    /**
     * 文件
     */
    FILE_RESOURCE_NOT_EXIST(910001, "上传的文件列表不能为空"),

    /**
     * oss
     */
    SET_OSS_PROPERTIES_FAIL(920001, "设置oss属性配置失败,请检查oss相关属性配置"),
    CREATE_OSS_CLIENT_FAIL(920002, "创建oss client对象失败,请检查oss相关属性配置"),
    GET_OSS_CLIENT_NOT_EXIST(920003, "获取oss client对象不存在,请检查oss相关属性配置"),
    GET_OSS_FILE_FAIL(920004, "获取oss文件列表失败,请检查oss相关属性配置"),
    FILE_RESOURCE_DELETE_FAIL(920005, "文件删除失败,请检查oss相关属性配置"),
    FILE_RESOURCE_DOWN_LOAD_FAIL(920006, "文件下载失败,请检查oss相关属性配置"),
    FILE_RESOURCE_UPLOAD_FAIL(920007, "文件上传失败,请检查oss相关属性配置"),

    /**
     * 指定候选节点候选人
     */
    NGR_USER_NOT_EXIST(930001, "拟稿人不存在,导致候选节点无法指定相关人员"),
    TASK_NODE_NOT_EXIST(930002, "来源节点任务实例编为空,导致无法获取对应该任务节点的处理人"),
    TASK_INSTANCE_NOT_EXIST(930003, "历史任务实例不存在,导致无法获取对应该任务节点的处理人"),
    TASK_NODE_ASSIGNEE_NOT_EXIST(930004, "历史任务节点处理人不存在,导致无法获取对应该任务节点的处理人"),
    DQR_USER_NOT_EXIST(930005, "当前人为空,导致候选节点无法指定相关人员"),
    GET_LAST_SET_CANDIDATE_FAIL(930006, "获取上次设置的候选人列表失败"),
    GET_LAST_CANDIDATE_OPERATOR_FAIL(930007, "获取指定节点最新设置的候选人或者最近审批人信息失败"),
    /**
     * 补发
     */
    REISSUE_SIGN_TASK_FAIL(940001, "任务补发失败"),
    REISSUE_USER_NOT_EXIST(940002, "补发人员不能为空"),
    NO_REISSUE_SIGN_AUTH(940003, "该节点没有该任务的补发权限"),
    NO_REISSUE_SELF(940004, "该节点正在运行中，请通过加签的方式操作"),


    /**
     * 节点留空
     */
    FILE_NODE_CANDIDATE_BLANK_FAIL(950001,"第一个用户节点不能留空"),

    /**
     * 同步待办组件
     */
    SYNC_TASKS_APP_FAIL(960001,"同步待办组件异常"),

    /**
     * 关闭流程后处理事件异常
     */
    TERMINATE_PROCESS_FAIL(960002,"关闭流程后处理事件异常");

    private int code;
    private String message;

    ErrorCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public String errMessage() {
        return this.message;
    }

    public int errCode() {
        return this.code;
    }
}
